% !Mode:: "TeX:UTF-8"

\chapter{压力测试}
\section{项目背景}

\begin{itemize}
\item{测试软件}：饿了么
\item{测试版本}：微服务架构版本
\item{开发环境}：使用SpringToolSuite4进行开发，MySql作为数据库
\item{测试工具}：使用JMeter进行压力测试
\end{itemize}
\section{测试目标}
本次测试的主要目的是找出系统的瓶颈和极限，以确定系统在承受压力时的表现和稳定性。

\section{测试概述}
\begin{itemize}
\item{测试说明}：
~

~
本次测试范围包括：用户管理，商家管理，积分管理，食品管理等。
~

~
安装JMeter分别对上述模块进行压力测试，分别测试2000、3000、5000个线程，Ramp-Up时间为10秒，循环次数1次。

\item{测试人员}：
~

刘宇轩~~~任家辰
~

\item{测试环境}：
\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.9\textwidth]{sheet8}
    \vspace{-2.0em}
    \caption{测试环境}\label{fig:sheet8}
    \vspace{\baselineskip}
    \end{figure}

\end{itemize}

~

~

~

~

~

~
\section{测试过程评估}
\begin{itemize}
\item{测试结果与分析}：
\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet7}
    \vspace{-2.0em}
    \caption{商家查询功能测试结果}\label{fig:sheet7}
    \vspace{-2.0em}
    \vspace{\baselineskip}
    \end{figure}

\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet9}
    \vspace{-2.0em}
    \caption{食品查询功能测试结果}\label{fig:sheet9}
    \vspace{-2.0em}
    \vspace{\baselineskip}
    \end{figure}


\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet10}
    \vspace{-2.0em}
    \caption{订单支付功能测试结果}\label{fig:sheet10}
    \vspace{-2.0em}
    \vspace{\baselineskip}
    \end{figure}

~

~

~

~

\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet11}
    \vspace{-2.0em}
    \caption{用户查询功能测试结果}\label{fig:sheet11}
    \vspace{\baselineskip}
    \end{figure}

    \begin{figure}[htbp]
        \centering
        \vspace{-2.0em}
        \includegraphics[width=0.8\textwidth]{sheet12}
        \vspace{-2.0em}
        \caption{积分查询功能测试结果}\label{fig:sheet12}
        \vspace{\baselineskip}
        \end{figure}
\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet13}
    \vspace{-2.0em}
    \caption{钱包查询功能测试结果}\label{fig:sheet13}
    \vspace{\baselineskip}
    \end{figure}

\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet14}
    \vspace{-2.0em}
    \caption{优惠卷购买功能测试结果}\label{fig:sheet14}
    \vspace{\baselineskip}
    \end{figure}

\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet15}
    \vspace{-2.0em}
    \caption{优惠卷查询功能测试结果}\label{fig:sheet15}
    \vspace{\baselineskip}
    \end{figure}

\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet16}
    \vspace{-2.0em}
    \caption{购物车查询功能测试结果}\label{fig:sheet16}
    \vspace{\baselineskip}
    \end{figure}

\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet17}
    \vspace{-2.0em}
    \caption{用户地址修改功能测试结果}\label{fig:sheet17}
    \vspace{\baselineskip}
    \end{figure}

    \begin{figure}[htbp]
        \centering
        \vspace{-2.0em}
        \includegraphics[width=0.8\textwidth]{sheet18}
        \vspace{-2.0em}
        \caption{Cart更新功能测试结果}\label{fig:sheet18}
        \vspace{\baselineskip}
        \end{figure}

        \begin{figure}[htbp]
            \centering
            \vspace{-2.0em}
            \includegraphics[width=0.8\textwidth]{sheet19}
            \vspace{-2.0em}
            \caption{Cart转移功能测试结果}\label{fig:sheet19}
            \vspace{\baselineskip}
            \end{figure}

            \begin{figure}[htbp]
                \centering
                \vspace{-2.0em}
                \includegraphics[width=0.8\textwidth]{sheet20}
                \vspace{-2.0em}
                \caption{积分流水查询功能测试结果}\label{fig:sheet20}
                \vspace{\baselineskip}
                \end{figure}

                \begin{figure}[htbp]
                    \centering
                    \vspace{-2.0em}
                    \includegraphics[width=0.8\textwidth]{sheet21}
                    \vspace{-2.0em}
                    \caption{订单ID查询功能测试结果}\label{fig:sheet21}
                    \vspace{\baselineskip}
                    \end{figure}

                    \begin{figure}[htbp]
                        \centering
                        \vspace{-2.0em}
                        \includegraphics[width=0.8\textwidth]{sheet22}
                        \vspace{-2.0em}
                        \caption{可用优惠券查询功能测试结果}\label{fig:sheet22}
                        \vspace{\baselineskip}
                        \end{figure}

\begin{figure}[htbp]
    \centering
    \vspace{-2.0em}
    \includegraphics[width=0.8\textwidth]{sheet23}
    \vspace{-3.0em}
    \caption{优惠券数量查询功能测试结果}\label{fig:sheet23}
    \vspace{-2.0em}
    \vspace{\baselineskip}
    \end{figure}

\begin{figure}[htbp]
    \centering
    \vspace{-2.5em}
    \includegraphics[width=0.8\textwidth]{sheet24}
    \vspace{-2.0em}
    \caption{钱包余额查询功能测试结果}\label{fig:sheet24}
    \vspace{\baselineskip}
    \end{figure}

~~~~~~~根据测试结果，系统在2000个线程下未观察到异常情况，在3000个线程下有接近42的请求出现异常，在5000个线程下有接近54的请求出现异常。
在2000个线程下所有请求均成功完成，性能表现良好，系统稳定性高。在3000与5000个线程下异常率较高的原因可能是由于系统资源不足导致的性能瓶颈，部分请求无法得到及时响应而导致异常率上升。

~

\item{缺陷分析及修复}：
\begin{itemize}
    \item{缺陷主要分为以下几个方面：}
    
    gateway易熔断、后端业务逻辑冗余、gateway从eureka服务器获取信息速度慢、电脑cpu以及网络影响。
     
   
    \item{针对问题的解决措施：}

        ~~~~~~~~针对gateway易熔断的问题，对gateway进行了修改，调整了熔断条件。
       
        ~~~~~~~~针对后端业务逻辑冗余的问题，修改代码业务逻辑，避免出现代码冗余，使
        得调用服务速度变快。

        ~~~~~~~~针对gateway从eureka服务器获取信息速度慢的问题，我们尝试了其他微服务的服务器实现，比如Consul发现影响不是很明显。
      
        ~~~~~~~~针对电脑cpu以及网络影响，我们发现不同电脑以及不同网络下的结果有一定差距，选择了更好的网络进行测试。
         

    \end{itemize}

\end{itemize}


\section{测试总结}
本次测试共进行了51次测试，发现系统极限线程数在2000-3000个区间内，并且对系统进行了改善将异常率降低。

